package gui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;

import javax.swing.JEditorPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;

import mail.Mail;

/**
 * Klasse repräsentiert ein Email Objekt welches in der Email View in der Liste
 * aufgeführt wird
 * 
 * @author Michi
 * 
 */
public class MailPanel extends JPanel {
	/**
	 * Member data
	 */
	private static final long serialVersionUID = 5916896620338274338L;
	private JTextField fromMailPanelTextField;
	private JTextField betreffMailPanelTextField;
	// private JTextArea contentMailPanelTextField;
	private JEditorPane contentMailPanelTextField;
	private Mail mail;
	private String fromClickedInfo;
	private String toClickedInfo;
	private String betreffClickedInfo;
	private String contentClickedInfo;
	private JTextField toMailPanelTextField;
	private int ID;
	private Color color = new Color(238, 238, 238);

	// Getters & Setters

	public Border getFromBorder() {
		return fromMailPanelTextField.getBorder();
	}

	public Mail getMail() {
		return mail;
	}

	public void setMail(Mail mail) {
		this.mail = mail;
	}

	public Color getColor() {
		return color;
	}

	public void setColor(Color color) {
		this.color = color;
	}

	public int getID() {
		return ID;
	}

	public void setID(int iD) {
		ID = iD;
	}

	public JTextField getToMailPanelTextField() {
		return toMailPanelTextField;
	}

	public void setToMailPanelTextField(JTextField toMailPanelTextField) {
		this.toMailPanelTextField = toMailPanelTextField;
	}

	public JTextField getFromMailPanelTextField() {
		return fromMailPanelTextField;
	}

	public void setFromMailPanelTextField(JTextField fromMailPanelTextField) {
		this.fromMailPanelTextField = fromMailPanelTextField;
	}

	public JTextField getBetreffMailPanelTextField() {
		return betreffMailPanelTextField;
	}

	public void setBetreffMailPanelTextField(
			JTextField betreffMailPanelTextField) {
		this.betreffMailPanelTextField = betreffMailPanelTextField;
	}

	public String getFromClickedInfo() {
		return fromClickedInfo;
	}

	public JEditorPane getContentMailPanelTextField() {
		return contentMailPanelTextField;
	}

	public void setContentMailPanelTextField(
			JEditorPane contentMailPanelTextField) {
		this.contentMailPanelTextField = contentMailPanelTextField;
	}

	public void setFromClickedInfo(String fromClickedInfo) {
		this.fromClickedInfo = fromClickedInfo;
	}

	public String getToClickedInfo() {
		return toClickedInfo;
	}

	public void setToClickedInfo(String toClickedInfo) {
		this.toClickedInfo = toClickedInfo;
	}

	public String getBetreffClickedInfo() {
		return betreffClickedInfo;
	}

	public void setBetreffClickedInfo(String betreffClickedInfo) {
		this.betreffClickedInfo = betreffClickedInfo;
	}

	public String getContentClickedInfo() {
		return contentClickedInfo;
	}

	public void setContentClickedInfo(String contentClickedInfo) {
		this.contentClickedInfo = contentClickedInfo;
	}

	/**
	 * Create the panel.
	 */
	public MailPanel() {
		setBackground(color);

		/**
		 * Standarteinstellungen
		 */
		setPreferredSize(new Dimension(251, 90));
		setMinimumSize(new Dimension(251, 90));
		setLayout(new BorderLayout(0, 0));

		/**
		 * Erzeugen einer Border
		 */
		Border border = new BevelBorder(BevelBorder.RAISED);
		setBorder(border);

		/**
		 * Erzeugen und konfigurieren des Von-Feldes
		 */
		fromMailPanelTextField = new JTextField();
		fromMailPanelTextField.setDisabledTextColor(Color.BLACK);
		fromMailPanelTextField.setEnabled(false);
		fromMailPanelTextField
				.setFont(new Font("Lucida Grande", Font.BOLD, 10));
		fromMailPanelTextField.setPreferredSize(new Dimension(250, 28));
		fromMailPanelTextField.setMinimumSize(new Dimension(250, 28));
		fromMailPanelTextField.setEditable(false);
		add(fromMailPanelTextField, BorderLayout.NORTH);

		/**
		 * TextFeld für Betreff wird erzeugt und konfiguriert
		 */
		betreffMailPanelTextField = new JTextField();
		betreffMailPanelTextField.setDisabledTextColor(Color.BLACK);
		betreffMailPanelTextField.setEnabled(false);
		betreffMailPanelTextField.setFont(new Font("Lucida Grande", Font.BOLD,
				9));
		betreffMailPanelTextField.setMinimumSize(new Dimension(250, 28));
		betreffMailPanelTextField.setPreferredSize(new Dimension(250, 28));
		betreffMailPanelTextField.setEditable(false);
		add(betreffMailPanelTextField, BorderLayout.CENTER);

		/**
		 * Content Feld wird erzeugt und konfiguriert
		 */
		// contentMailPanelTextField = new JTextArea();
		contentMailPanelTextField = new JEditorPane();
		contentMailPanelTextField.setDisabledTextColor(Color.GRAY);
		contentMailPanelTextField.setEditable(false);
		contentMailPanelTextField.setFont(new Font("Lucida Grande", Font.PLAIN,
				10));
		contentMailPanelTextField.setPreferredSize(new Dimension(250, 28));
		contentMailPanelTextField.setMinimumSize(new Dimension(250, 28));
		contentMailPanelTextField.setEnabled(false);

		/**
		 * Workarround um Border zu erzeugen
		 */
		contentMailPanelTextField.setBorder(getFromBorder());

		add(contentMailPanelTextField, BorderLayout.SOUTH);

	}

	// Getter und Setter Bereich

	/**
	 * Workarround: setCaretPosition wird zusätzlich aufgerufen, sodass man den
	 * Beginn des Absenders auf dem Panel sieht
	 * 
	 * @param from
	 *            Absender als String
	 */
	public void setFrom(String from) {
		fromMailPanelTextField.setText(from);
		fromMailPanelTextField.setCaretPosition(0);
	}

	/**
	 * Workarround: setCaretPosition wird zusätzlich aufgerufen, sodass man den
	 * Beginn des Betreffs auf dem Panel sieht
	 * 
	 * @param betreff
	 *            Betreff als String
	 */
	public void setBetreff(String betreff) {
		betreffMailPanelTextField.setText(betreff);
		betreffMailPanelTextField.setCaretPosition(0);
	}

	/**
	 * Workarround: setCaretPosition wird zusätzlich aufgerufen, sodass man den
	 * Beginn des Contents auf dem Panel sieht
	 * 
	 * @param str
	 *            Inhalt der EMail als String
	 */
	public void setContentText(String str) {

		contentMailPanelTextField.setText(str);
		contentMailPanelTextField.setCaretPosition(0);
	}

	public static void main(String[] args) {
		new MailPanel();
	}

}
